//
// Created by Creat on 2024/5/26.
//

#ifndef LEETCODE_PRIORITYQUEUE_H
#define LEETCODE_PRIORITYQUEUE_H
// 比较函数
typedef int (*PriorityQueueCmpFunc)(void*, void*);
// 优先队列
typedef struct HeapStruct{
    int capacity; // 容量
    int size; // 当前数量
    void** data; // 数据表
    PriorityQueueCmpFunc cmp; //
}PriorityQueue;
// 初始化
int init(PriorityQueue **pq, int max_size, PriorityQueueCmpFunc cmp);
// 判空
int is_empty(PriorityQueue *pq);
// 判满
int is_full(PriorityQueue *pq);
// 插入
int push(PriorityQueue *pq, void *data);
// 找最值
void* peek(PriorityQueue *pq);
// 弹出第一个
void* pop(PriorityQueue *pq);
// 销毁
int destroy(PriorityQueue *pq);
#endif //LEETCODE_PRIORITYQUEUE_H
